package com.hangim.pce.common.search.service;


import com.hangim.pce.common.search.domain.ESDisease;
import com.hangim.pce.common.search.domain.ESDrug;
import com.hangim.pce.common.search.domain.ESElement;
import com.hangim.pce.common.search.domain.ESSymptom;
import com.hangim.pce.common.search.enums.ESActionType;
import com.hangim.pce.model.BaseDrug;
import com.hangim.pce.model.BaseElement;
import com.hangim.pce.model.SysDisease;
import com.hangim.pce.model.SysSymptom;

/**
 * ElasticSearch同步服务
 */
public interface ESSyncService {
    /**
     * 发送同步疾病的消息队列
     *
     * @param disease
     * @param actionType
     */
    void sendDisease(SysDisease disease, ESActionType actionType);

    /**
     * 发送同步药品的消息队列
     *
     * @param drug
     * @param actionType
     */
    void sendDrug(BaseDrug drug, ESActionType actionType);

    /**
     * 发送同步成分的消息队列
     *
     * @param element
     * @param actionType
     */
    void sendElement(BaseElement element, ESActionType actionType);

    /**
     * 发送同步症状的消息队列
     *
     * @param symptom
     * @param actionType
     */
    void sendSymptom(SysSymptom symptom, ESActionType actionType);

    /**
     * 同步疾病到es
     *
     * @param entity
     */
    void syncDisease(ESDisease entity);

    /**
     * 删除ES中的疾病
     *
     * @param Id
     */
    void deleteDisease(Long Id);

    /**
     * 同步药品到es
     *
     * @param entity
     */
    void syncDrug(ESDrug entity);

    /**
     * 删除ES中的药品
     *
     * @param Id
     */
    void deleteDrug(Long Id);

    /**
     * 同步症状到es
     *
     * @param entity
     */
    void syncSymptom(ESSymptom entity);

    /**
     * 删除ES中的症状
     *
     * @param Id
     */
    void deleteSymptom(Long Id);

    /**
     * 同步成分到es
     *
     * @param entity
     */
    void syncElement(ESElement entity);

    /**
     * 删除ES中的成分
     *
     * @param Id
     */
    void deleteElement(Long Id);
}
